package com.qba.trafficbb;

import java.util.Date;
import java.util.List;

import com.qba.trafficbb.modelo.Estadistica;
import com.qba.trafficbb.modelo.Juego;
import com.qba.trafficbb.modelo.pregunta.PreguntaImagen;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

public class EvaluacionActivity extends BaseActivity {
	ImageView imvSennal;
	RadioButton radRespuesta1;
	RadioButton radRespuesta2;
	RadioButton radRespuesta3;
	RadioButton[] radRespuestas;
	TextView tvwProgreso;
	ImageView imvAnterior;
	ImageView imvSiguiente;
	Juego juego;
	int numPreguntaActual;
	int numPreguntaFinal;
	

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_evaluacion);
		juego = Juego.obtieneInstancia(this);
		iniciarComponentes();
	}

	private void iniciarComponentes() {
		numPreguntaActual = 1;
		numPreguntaFinal = 20;
		imvSennal = (ImageView) findViewById(R.id.imvSennal);
		radRespuesta1 = (RadioButton) findViewById(R.id.radRespuesta1);
		radRespuesta2 = (RadioButton) findViewById(R.id.radRespuesta2);
		radRespuesta3 = (RadioButton) findViewById(R.id.radRespuesta3);
		tvwProgreso = (TextView) findViewById(R.id.tvwProgreso);
		imvAnterior = (ImageView) findViewById(R.id.imvAnterior);
		imvSiguiente = (ImageView) findViewById(R.id.imvSiguiente);
		radRespuestas = new RadioButton[] { radRespuesta1, radRespuesta2, radRespuesta3 };
		
		juego.avanzaAProximaPregunta();
		mostrarPregunta(juego.obtienePreguntaActual(), juego.obtieneRespuestasActuales(), juego.obtieneRespuestaActual());
	}

	private void actualizarProgreso() {
		tvwProgreso.setText(String.valueOf(numPreguntaActual) + "/" + String.valueOf(numPreguntaFinal));
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_evaluacion, menu);
		return true;
	}

	private void mostrarPregunta(String pregunta, String[] respuestas, int respuesta) {
		imvSennal.setImageResource(getResources().getIdentifier(pregunta, "drawable", "com.qba.trafficbb"));
		radRespuesta1.setText(respuestas[0]);
		radRespuesta2.setText(respuestas[1]);
		radRespuesta3.setText(respuestas[2]);
		actualizarProgreso();
		if (respuesta >= 0 && respuesta <= 2)
			radRespuestas[respuesta].setChecked(true);
		else
			for (RadioButton r: radRespuestas)
				r.setChecked(false);
	}
	
	public void imvSiguiente_click(View view) {
		if (numPreguntaActual >= numPreguntaFinal) {
			if (juego.obtenerPreguntasAnteriores().size() < numPreguntaFinal)
				juego.guardaPreguntaActual();
			return;
		}
		
		numPreguntaActual++;
		juego.avanzaAProximaPregunta();
		mostrarPregunta(juego.obtienePreguntaActual(), juego.obtieneRespuestasActuales(), juego.obtieneRespuestaActual());
	}
	
	public void imvAnterior_click(View view) {
		if (numPreguntaActual <= 1)
			return;
		
		numPreguntaActual--;
		juego.retrocedeAPreguntaAnterior();
		mostrarPregunta(juego.obtienePreguntaActual(), juego.obtieneRespuestasActuales(), juego.obtieneRespuestaActual());
	}
	
	public void radRespuesta_click(View view) {
		((RadioButton) view).setChecked(true);
		responder(Integer.parseInt(view.getTag().toString()));
	}
	
	private void responder(int indiceRespuesta) {
		juego.respondePreguntaActual(indiceRespuesta);
	}
	
	public void imvCerrar_click(View view) {
		Estadistica est = new Estadistica();
		est.setFecha(new Date());
		est.setPuntajeMaximo(numPreguntaFinal);
		est.setPuntuacion(juego.getPuntuacion());
		List<Estadistica> estadisticas = leeEstadistica();
		estadisticas.add(est);
		escribeEstadistica(estadisticas);
		escribeUltimaEvaluacion(est);
		startActivity(new Intent(EvaluacionActivity.this, EstadisticasActivity.class));
		finish();
	}
}
